Package | smart.who.int.icvp |
Type | StructureMap |
Id | Id |
FHIR Version | R4 |
Source | http://smart.who.int/icvp/https://build.fhir.org/ig/WorldHealthOrganization/smart-icvp/StructureMap-DVCLMToIPS.html |
Url | http://smart.who.int/icvp/StructureMap/DVCLMToIPS |
Version | 0.1.0 |
Status | draft |
Date | 2024-12-11T15:44:25+00:00 |
Name | DVCLMToIPS |
Experimental | False |
Authority | who |
No resources found
No resources found
Note: links and images are rebased to the (stated) source
Generated Narrative: StructureMap DVCLMToIPS
map "http://smart.who.int/icvp/StructureMap/DVCLMToIPS" = "DVCLMToIPS" uses "http://smart.who.int/icvp/StructureDefinition/ModelDVC" alias DVCLogicalModel as source uses "http://hl7.org/fhir/StructureDefinition/Bundle" alias IPS as target // create Bundle group DVCLMToIPS(source lm : DVCLogicalModel, target ips : IPS) { lm -> ips.type = 'document' "setIPSType"; lm -> uuid() as bid, ips.identifier as id, id.value = bid, id.system = 'urn:oid:2.16.724.4.8.10.200.10' "setId"; lm -> uuid() as cid, uuid() as pid, uuid() as mid, uuid() as aid, uuid() as proid, uuid() as immid then { lm -> ips.entry as entry, entry.resource = create('Composition') as composition, entry.fullUrl = append('urn:uuid:', cid) then { lm then LmToComposition(lm, ips, composition, cid, pid, mid, aid, proid, immid) "set LmToComposition"; lm -> ips.entry as entry, entry.fullUrl = append('urn:uuid:', pid), create('Patient') as patient then { lm then DemographicsToPatient(lm, patient, pid) "createPatient"; lm -> entry.resource = patient "setPatientEntry"; } "mapPatientResource"; lm.issuer as issuer then { issuer.reference as id -> ips.entry as entry, entry.fullUrl = append('urn:uuid:', id), create('Organization') as organization then { lm -> organization then createAuthor(issuer, organization) "createOrganization"; lm -> entry.resource = organization "setOrganizationEntry"; } "mapOrganizationResource"; } "ss"; } "mapCompositionResource"; } "setEntries"; } // create Composition group LmToComposition(source lm : DVCLogicalModel, target ips : Bundle, target composition : Composition, source cid, source pid, source mid, source aid, source proid, source immid) { cid -> composition.id = cid "setCid"; lm -> composition.status = 'final' "setStatus"; lm -> composition.title = 'International Patient Summary' "setTitle"; lm -> create('Coding') as coding, coding.code = '60591-5', coding.system = 'http://loinc.org', create('CodeableConcept') as code, code.coding = coding, composition.type = code "setType"; lm -> composition.subject as subject then { lm -> subject.reference = append('urn:uuid:', pid) "setSubject"; } "setSubject"; lm.issuer as issuer then { issuer.reference as id -> composition.author as author then { id -> author.reference = append('urn:uuid:', id) "setAuthor"; } "setauthr"; } "setid"; lm -> composition.section as medication then createSectionMedications(lm, medication, mid) "createMedication"; lm -> composition.section as allergies then createSectionAllergies(lm, allergies, aid) "createAllergies"; lm -> composition.section as problems then createSectionProblems(lm, problems, proid) "createProblems"; lm then createSectionImmunizations(lm, ips, composition, immid, pid) "createImmunizations"; } // create Patient group DemographicsToPatient(source lm : DVCLogicalModel, target patient : Patient, source pid) { pid -> patient.id = pid "setPatientId"; lm.name as sourceName -> patient.name as targetName then nameToHumanName(sourceName, targetName) "Setname"; lm.dob as dob -> patient.birthDate = dob "setDateofBirth"; lm.sex as sex then ExtractGender(sex, patient) "Patient Gender"; // lm.sex as sex -> patient.gender = sex "setSex"; lm.nid as id -> patient.identifier as identifier, identifier.value = id "setNationalIdentifier"; lm.guardian as guardian -> patient.contact as parentContact, parentContact.name as parentName then nameToHumanName(guardian, parentName) "setGuardianName"; } // deals with short and case sensitive codes group ExtractGender(source sex, target patient : Patient) { sex where (sex = 'M') -> patient.gender = 'male' "set male"; sex where (sex = 'F') -> patient.gender = 'female' "set female"; sex where (sex = 'm') -> patient.gender = 'male' "set male"; sex where (sex = 'f') -> patient.gender = 'female' "set female"; sex where (sex = 'Male') -> patient.gender = 'male' "set male"; sex where (sex = 'Female') -> patient.gender = 'female' "set female"; sex where (sex = 'male') -> patient.gender = 'male' "set male"; sex where (sex = 'female') -> patient.gender = 'female' "set female"; } // create author group createAuthor(source issuer, target org : Organization) { issuer.reference as id -> org.id = id "setID"; } // create sectionMedications group createSectionMedications(source lm : DVCLogicalModel, target med : BackboneElement, source mid) { mid -> med.id = mid "setmedicationid"; lm -> med.title = 'Medication Summary Section' "setMedicationTitle"; lm -> med.text as text then generateNarrativeText(med, text) "setText"; lm -> create('Coding') as coding, coding.code = '10160-0', coding.system = 'http://loinc.org', create('CodeableConcept') as code, code.coding = coding, med.code = code "setCode"; lm -> create('Coding') as coding, coding.code = 'unavailable', coding.system = 'http://hl7.org/fhir/ValueSet/list-empty-reason', create('CodeableConcept') as code, code.coding = coding, med.emptyReason = code "setCode"; } // create sectionAllergies group createSectionAllergies(source lm : DVCLogicalModel, target all : BackboneElement, source aid) { aid -> all.id = aid "setAllergyId"; lm -> all.title = 'Allergies Section' "setAllergyTitle"; lm -> all.text as text then generateNarrativeText(all, text) "setText"; lm -> create('Coding') as coding, coding.code = '48765-2', coding.system = 'http://loinc.org', create('CodeableConcept') as code, code.coding = coding, all.code = code "setCode"; lm -> create('Coding') as coding, coding.code = 'unavailable', coding.system = 'http://hl7.org/fhir/ValueSet/list-empty-reason', create('CodeableConcept') as code, code.coding = coding, all.emptyReason = code "setCode"; } // create sectionProblems group createSectionProblems(source lm : DVCLogicalModel, target prb : BackboneElement, source proid) { proid -> prb.id = proid "setProblemsId"; lm -> prb.title = 'Problems Section' "setProblemTitle"; lm -> prb.text as text then generateNarrativeText(prb, text) "setText"; lm -> create('Coding') as coding, coding.code = '11450-4', coding.system = 'http://loinc.org', create('CodeableConcept') as code, code.coding = coding, prb.code = code "setCode"; lm -> create('Coding') as coding, coding.code = 'unavailable', coding.system = 'http://hl7.org/fhir/ValueSet/list-empty-reason', create('CodeableConcept') as code, code.coding = coding, prb.emptyReason = code "setCode"; } // create sectionImmunizations group createSectionImmunizations(source lm : DVCLogicalModel, target bundle : Bundle, target composition : Composition, source immid, source pid) { lm -> composition.section as imm then { immid -> imm.id = immid "setImmunizationsId"; lm -> imm.title = 'Immunizations Section' "setImmunizationTitle"; lm -> imm.text as text then generateNarrativeText(imm, text) "setText"; lm -> create('Coding') as coding, coding.code = '11369-6', coding.system = 'http://loinc.org', create('CodeableConcept') as code, code.coding = coding, imm.code = code "setCode"; lm.vaccineDetails as vax -> uuid() as id, bundle.entry as entry, entry.fullUrl = append('urn:uuid:', id), imm.entry as sectionEntry, sectionEntry.reference = append('urn:uuid:', id), entry.resource = create('Immunization') as immunization, immunization.id = id then createImmunizationResource(vax, immunization, pid) "setImmz"; } "set"; } group createImmunizationResource(source vax : vaccineDetails, target immunization : Immunization, source pid) { vax -> immunization.status = 'completed' "setStatus"; vax.vaccineClassification as vaccine -> immunization.vaccineCode = vaccine "setvaccinecode"; vax.date as date -> immunization.occurrence = append(date, 'T00:00:00.000Z') "setDate"; vax.batchNo as batchNo -> immunization.lotNumber = batchNo "setBatchNo"; vax -> immunization.protocolApplied as protocol then { vax.doseNumber as doseNo then { doseNo.coding as coding then { coding.code as code -> protocol.doseNumber = code "setDoseNo"; } "setDoseNo"; } "setDoseNo"; vax.disease as disease -> create('CodeableConcept') as code, code.coding = disease, protocol.targetDisease = code "setTargetDisease"; } "setProtocolApplied"; vax -> immunization.patient as subject, subject.reference = append('urn:uuid:', pid) "setSubject"; vax.manufacturerId as maId -> create('Reference') as maRef, maRef.identifier = maId, immunization.manufacturer = maRef "set Manufacturer"; } // helper function group generateNarrativeText(source src : Section, target text : string) { src -> text.status = 'empty' "setstatus"; src -> text.div = '<div xmlns=\"http://www.w3.org/1999/xhtml\">Narrative not available</div>' "setdiv"; } group nameToHumanName(source sourceName, target targetName : HumanName) { sourceName as patientName -> targetName.text = patientName "Patient Name"; } group humanNameToHumanName(source sourceName, target targetName : HumanName) { sourceName.use as use -> targetName.use = use "CopyUse"; sourceName.text as text -> targetName.text = text "CopyText"; sourceName.family as family -> targetName.family = family "CopyFamily"; sourceName.given as given -> targetName.given = given "CopyGiven"; sourceName.prefix as prefix -> targetName.prefix = prefix "CopyPrefix"; sourceName.suffix as suffix -> targetName.suffix = suffix "CopySuffix"; // Copy the period using the previously defined group function sourceName.period as sourcePeriod -> targetName.period as targetPeriod then { sourcePeriod then periodToPeriod(sourcePeriod, targetPeriod) "CopyPeriod"; } "copyPeriod"; } group periodToPeriod(source sourcePeriod, target targetPeriod : Period) { sourcePeriod.start as start -> targetPeriod.start = start "set period start"; sourcePeriod.end as end -> targetPeriod.end = end "set period end"; }
{
"resourceType" : "StructureMap",
"id" : "DVCLMToIPS",
"text" : {
"status" : "generated",
"div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\"><p class=\"res-header-id\"><b>Generated Narrative: StructureMap DVCLMToIPS</b></p><a name=\"DVCLMToIPS\"> </a><a name=\"hcDVCLMToIPS\"> </a><a name=\"DVCLMToIPS-en-US\"> </a><pre class=\"fml\">\r\n<b>map</b><span style=\"color: navy\"> "</span>http://smart.who.int/icvp/StructureMap/DVCLMToIPS<span style=\"color: navy\">" = "</span>DVCLMToIPS<span style=\"color: navy\">"\r\n\r\n</span><b>uses</b><span style=\"color: navy\"> "</span><a href=\"StructureDefinition-ModelDVC.html\" title=\"DVC\">http://smart.who.int/icvp/StructureDefinition/ModelDVC</a><span style=\"color: navy\">" </span><b>alias </b>DVCLogicalModel <b>as </b><b>source</b>\r\n<b>uses</b><span style=\"color: navy\"> "</span><a href=\"http://hl7.org/fhir/R4/bundle.html\" title=\"Bundle\">http://hl7.org/fhir/StructureDefinition/Bundle</a><span style=\"color: navy\">" </span><b>alias </b>IPS <b>as </b><b>target</b>\r\n\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">create Bundle</span>\r\n<b>group </b>DVCLMToIPS<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">lm</span><span style=\"color: navy\"> : </span>DVCLogicalModel, <b>target</b> <span style=\"color: maroon\">ips</span><span style=\"color: navy\"> : </span>IPS<span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span> lm<span style=\"color: navy\"><b> -> </b></span>ips.type = <span style=\"color: blue\">'document'</span> <i>"setIPSType"</i><span style=\"color: navy\">;</span>\r\n lm<span style=\"color: navy\"><b> -> </b></span> <b>uuid</b><span style=\"color: navy\">(</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">bid</span><span style=\"color: navy\">, </span> ips.identifier<b> as </b><span style=\"color: maroon\">id</span><span style=\"color: navy\">, </span> id.value = <span style=\"color: maroon\">bid</span><span style=\"color: navy\">, </span> id.system = <span style=\"color: blue\">'urn:oid:2.16.724.4.8.10.200.10'</span> <i>"setId"</i><span style=\"color: navy\">;</span>\r\n lm<span style=\"color: navy\"><b> -> </b></span> <b>uuid</b><span style=\"color: navy\">(</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">cid</span><span style=\"color: navy\">, </span> <b>uuid</b><span style=\"color: navy\">(</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">pid</span><span style=\"color: navy\">, </span> <b>uuid</b><span style=\"color: navy\">(</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">mid</span><span style=\"color: navy\">, </span> <b>uuid</b><span style=\"color: navy\">(</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">aid</span><span style=\"color: navy\">, </span> <b>uuid</b><span style=\"color: navy\">(</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">proid</span><span style=\"color: navy\">, </span> <b>uuid</b><span style=\"color: navy\">(</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">immid</span><b> then</b><span style=\"color: navy\"> {\r\n</span> lm<span style=\"color: navy\"><b> -> </b></span> ips.entry<b> as </b><span style=\"color: maroon\">entry</span><span style=\"color: navy\">, </span> entry.resource = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Composition'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">composition</span><span style=\"color: navy\">, </span> entry.fullUrl = <b>append</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'urn:uuid:'</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">cid</span><span style=\"color: navy\">)</span><b> then</b><span style=\"color: navy\"> {\r\n</span> lm<b> then </b>LmToComposition<span style=\"color: navy\">(</span><span style=\"color: maroon\">lm</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">ips</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">composition</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">cid</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">pid</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">mid</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">aid</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">proid</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">immid</span><span style=\"color: navy\">)</span> <i>"set LmToComposition"</i><span style=\"color: navy\">;</span>\r\n lm<span style=\"color: navy\"><b> -> </b></span> ips.entry<b> as </b><span style=\"color: maroon\">entry</span><span style=\"color: navy\">, </span> entry.fullUrl = <b>append</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'urn:uuid:'</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">pid</span><span style=\"color: navy\">)</span><span style=\"color: navy\">, </span> <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Patient'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">patient</span><b> then</b><span style=\"color: navy\"> {\r\n</span> lm<b> then </b>DemographicsToPatient<span style=\"color: navy\">(</span><span style=\"color: maroon\">lm</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">patient</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">pid</span><span style=\"color: navy\">)</span> <i>"createPatient"</i><span style=\"color: navy\">;</span>\r\n lm<span style=\"color: navy\"><b> -> </b></span>entry.resource = <span style=\"color: maroon\">patient</span> <i>"setPatientEntry"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"mapPatientResource"</i><span style=\"color: navy\">;</span>\r\n lm.issuer<b> as </b><span style=\"color: maroon\">issuer</span><b> then</b><span style=\"color: navy\"> {\r\n</span> issuer.reference<b> as </b><span style=\"color: maroon\">id</span><span style=\"color: navy\"><b> -> </b></span> ips.entry<b> as </b><span style=\"color: maroon\">entry</span><span style=\"color: navy\">, </span> entry.fullUrl = <b>append</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'urn:uuid:'</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">id</span><span style=\"color: navy\">)</span><span style=\"color: navy\">, </span> <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Organization'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">organization</span><b> then</b><span style=\"color: navy\"> {\r\n</span> lm<span style=\"color: navy\"><b> -> </b></span>organization<b> then </b>createAuthor<span style=\"color: navy\">(</span><span style=\"color: maroon\">issuer</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">organization</span><span style=\"color: navy\">)</span> <i>"createOrganization"</i><span style=\"color: navy\">;</span>\r\n lm<span style=\"color: navy\"><b> -> </b></span>entry.resource = <span style=\"color: maroon\">organization</span> <i>"setOrganizationEntry"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"mapOrganizationResource"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"ss"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"mapCompositionResource"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"setEntries"</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><span style=\"color: navy\">// </span><span style=\"color: green\">create Composition</span>\r\n<b>group </b>LmToComposition<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">lm</span><span style=\"color: navy\"> : </span>DVCLogicalModel, <b>target</b> <span style=\"color: maroon\">ips</span><span style=\"color: navy\"> : </span>Bundle, <b>target</b> <span style=\"color: maroon\">composition</span><span style=\"color: navy\"> : </span>Composition, <b>source</b> <span style=\"color: maroon\">cid</span>, <b>source</b> <span style=\"color: maroon\">pid</span>, <b>source</b> <span style=\"color: maroon\">mid</span>, <b>source</b> <span style=\"color: maroon\">aid</span>, <b>source</b> <span style=\"color: maroon\">proid</span>, <b>source</b> <span style=\"color: maroon\">immid</span><span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span> cid<span style=\"color: navy\"><b> -> </b></span>composition.id = <span style=\"color: maroon\">cid</span> <i>"setCid"</i><span style=\"color: navy\">;</span>\r\n lm<span style=\"color: navy\"><b> -> </b></span>composition.status = <span style=\"color: blue\">'final'</span> <i>"setStatus"</i><span style=\"color: navy\">;</span>\r\n lm<span style=\"color: navy\"><b> -> </b></span>composition.title = <span style=\"color: blue\">'International Patient Summary'</span> <i>"setTitle"</i><span style=\"color: navy\">;</span>\r\n lm<span style=\"color: navy\"><b> -> </b></span> <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Coding'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">coding</span><span style=\"color: navy\">, </span> coding.code = <span style=\"color: blue\">'60591-5'</span><span style=\"color: navy\">, </span> coding.system = <span style=\"color: blue\">'http://loinc.org'</span><span style=\"color: navy\">, </span> <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'CodeableConcept'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">code</span><span style=\"color: navy\">, </span> code.coding = <span style=\"color: maroon\">coding</span><span style=\"color: navy\">, </span> composition.type = <span style=\"color: maroon\">code</span> <i>"setType"</i><span style=\"color: navy\">;</span>\r\n lm<span style=\"color: navy\"><b> -> </b></span>composition.subject<b> as </b><span style=\"color: maroon\">subject</span><b> then</b><span style=\"color: navy\"> {\r\n</span> lm<span style=\"color: navy\"><b> -> </b></span>subject.reference = <b>append</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'urn:uuid:'</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">pid</span><span style=\"color: navy\">)</span> <i>"setSubject"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"setSubject"</i><span style=\"color: navy\">;</span>\r\n lm.issuer<b> as </b><span style=\"color: maroon\">issuer</span><b> then</b><span style=\"color: navy\"> {\r\n</span> issuer.reference<b> as </b><span style=\"color: maroon\">id</span><span style=\"color: navy\"><b> -> </b></span>composition.author<b> as </b><span style=\"color: maroon\">author</span><b> then</b><span style=\"color: navy\"> {\r\n</span> id<span style=\"color: navy\"><b> -> </b></span>author.reference = <b>append</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'urn:uuid:'</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">id</span><span style=\"color: navy\">)</span> <i>"setAuthor"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"setauthr"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"setid"</i><span style=\"color: navy\">;</span>\r\n lm<span style=\"color: navy\"><b> -> </b></span>composition.section<b> as </b><span style=\"color: maroon\">medication</span><b> then </b>createSectionMedications<span style=\"color: navy\">(</span><span style=\"color: maroon\">lm</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">medication</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">mid</span><span style=\"color: navy\">)</span> <i>"createMedication"</i><span style=\"color: navy\">;</span>\r\n lm<span style=\"color: navy\"><b> -> </b></span>composition.section<b> as </b><span style=\"color: maroon\">allergies</span><b> then </b>createSectionAllergies<span style=\"color: navy\">(</span><span style=\"color: maroon\">lm</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">allergies</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">aid</span><span style=\"color: navy\">)</span> <i>"createAllergies"</i><span style=\"color: navy\">;</span>\r\n lm<span style=\"color: navy\"><b> -> </b></span>composition.section<b> as </b><span style=\"color: maroon\">problems</span><b> then </b>createSectionProblems<span style=\"color: navy\">(</span><span style=\"color: maroon\">lm</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">problems</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">proid</span><span style=\"color: navy\">)</span> <i>"createProblems"</i><span style=\"color: navy\">;</span>\r\n lm<b> then </b>createSectionImmunizations<span style=\"color: navy\">(</span><span style=\"color: maroon\">lm</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">ips</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">composition</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">immid</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">pid</span><span style=\"color: navy\">)</span> <i>"createImmunizations"</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><span style=\"color: navy\">// </span><span style=\"color: green\">create Patient</span>\r\n<b>group </b>DemographicsToPatient<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">lm</span><span style=\"color: navy\"> : </span>DVCLogicalModel, <b>target</b> <span style=\"color: maroon\">patient</span><span style=\"color: navy\"> : </span>Patient, <b>source</b> <span style=\"color: maroon\">pid</span><span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span> pid<span style=\"color: navy\"><b> -> </b></span>patient.id = <span style=\"color: maroon\">pid</span> <i>"setPatientId"</i><span style=\"color: navy\">;</span>\r\n lm.name<b> as </b><span style=\"color: maroon\">sourceName</span><span style=\"color: navy\"><b> -> </b></span>patient.name<b> as </b><span style=\"color: maroon\">targetName</span><b> then </b>nameToHumanName<span style=\"color: navy\">(</span><span style=\"color: maroon\">sourceName</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">targetName</span><span style=\"color: navy\">)</span> <i>"Setname"</i><span style=\"color: navy\">;</span>\r\n lm.dob<b> as </b><span style=\"color: maroon\">dob</span><span style=\"color: navy\"><b> -> </b></span>patient.birthDate = <span style=\"color: maroon\">dob</span> <i>"setDateofBirth"</i><span style=\"color: navy\">;</span>\r\n lm.sex<b> as </b><span style=\"color: maroon\">sex</span><b> then </b>ExtractGender<span style=\"color: navy\">(</span><span style=\"color: maroon\">sex</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">patient</span><span style=\"color: navy\">)</span> <i>"Patient Gender"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: #b36b00\" title=\"This element was not defined prior to R5\">// lm.sex as sex -> patient.gender = sex "setSex";</span>\r\n lm.nid<b> as </b><span style=\"color: maroon\">id</span><span style=\"color: navy\"><b> -> </b></span> patient.identifier<b> as </b><span style=\"color: maroon\">identifier</span><span style=\"color: navy\">, </span> identifier.value = <span style=\"color: maroon\">id</span> <i>"setNationalIdentifier"</i><span style=\"color: navy\">;</span>\r\n lm.guardian<b> as </b><span style=\"color: maroon\">guardian</span><span style=\"color: navy\"><b> -> </b></span> patient.contact<b> as </b><span style=\"color: maroon\">parentContact</span><span style=\"color: navy\">, </span> parentContact.name<b> as </b><span style=\"color: maroon\">parentName</span><b> then </b>nameToHumanName<span style=\"color: navy\">(</span><span style=\"color: maroon\">guardian</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">parentName</span><span style=\"color: navy\">)</span> <i>"setGuardianName"</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><span style=\"color: navy\">// </span><span style=\"color: green\">deals with short and case sensitive codes</span>\r\n<b>group </b>ExtractGender<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">sex</span>, <b>target</b> <span style=\"color: maroon\">patient</span><span style=\"color: navy\"> : </span>Patient<span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span> sex<b> where </b>(sex = 'M')<span style=\"color: navy\"><b> -> </b></span>patient.gender = <span style=\"color: blue\">'male'</span> <i>"set male"</i><span style=\"color: navy\">;</span>\r\n sex<b> where </b>(sex = 'F')<span style=\"color: navy\"><b> -> </b></span>patient.gender = <span style=\"color: blue\">'female'</span> <i>"set female"</i><span style=\"color: navy\">;</span>\r\n sex<b> where </b>(sex = 'm')<span style=\"color: navy\"><b> -> </b></span>patient.gender = <span style=\"color: blue\">'male'</span> <i>"set male"</i><span style=\"color: navy\">;</span>\r\n sex<b> where </b>(sex = 'f')<span style=\"color: navy\"><b> -> </b></span>patient.gender = <span style=\"color: blue\">'female'</span> <i>"set female"</i><span style=\"color: navy\">;</span>\r\n sex<b> where </b>(sex = 'Male')<span style=\"color: navy\"><b> -> </b></span>patient.gender = <span style=\"color: blue\">'male'</span> <i>"set male"</i><span style=\"color: navy\">;</span>\r\n sex<b> where </b>(sex = 'Female')<span style=\"color: navy\"><b> -> </b></span>patient.gender = <span style=\"color: blue\">'female'</span> <i>"set female"</i><span style=\"color: navy\">;</span>\r\n sex<b> where </b>(sex = 'male')<span style=\"color: navy\"><b> -> </b></span>patient.gender = <span style=\"color: blue\">'male'</span> <i>"set male"</i><span style=\"color: navy\">;</span>\r\n sex<b> where </b>(sex = 'female')<span style=\"color: navy\"><b> -> </b></span>patient.gender = <span style=\"color: blue\">'female'</span> <i>"set female"</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><span style=\"color: navy\">// </span><span style=\"color: green\">create author</span>\r\n<b>group </b>createAuthor<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">issuer</span>, <b>target</b> <span style=\"color: maroon\">org</span><span style=\"color: navy\"> : </span>Organization<span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span> issuer.reference<b> as </b><span style=\"color: maroon\">id</span><span style=\"color: navy\"><b> -> </b></span>org.id = <span style=\"color: maroon\">id</span> <i>"setID"</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><span style=\"color: navy\">// </span><span style=\"color: green\">create sectionMedications</span>\r\n<b>group </b>createSectionMedications<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">lm</span><span style=\"color: navy\"> : </span>DVCLogicalModel, <b>target</b> <span style=\"color: maroon\">med</span><span style=\"color: navy\"> : </span>BackboneElement, <b>source</b> <span style=\"color: maroon\">mid</span><span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span> mid<span style=\"color: navy\"><b> -> </b></span>med.id = <span style=\"color: maroon\">mid</span> <i>"setmedicationid"</i><span style=\"color: navy\">;</span>\r\n lm<span style=\"color: navy\"><b> -> </b></span>med.title = <span style=\"color: blue\">'Medication Summary Section'</span> <i>"setMedicationTitle"</i><span style=\"color: navy\">;</span>\r\n lm<span style=\"color: navy\"><b> -> </b></span>med.text<b> as </b><span style=\"color: maroon\">text</span><b> then </b>generateNarrativeText<span style=\"color: navy\">(</span><span style=\"color: maroon\">med</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">text</span><span style=\"color: navy\">)</span> <i>"setText"</i><span style=\"color: navy\">;</span>\r\n lm<span style=\"color: navy\"><b> -> </b></span> <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Coding'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">coding</span><span style=\"color: navy\">, </span> coding.code = <span style=\"color: blue\">'10160-0'</span><span style=\"color: navy\">, </span> coding.system = <span style=\"color: blue\">'http://loinc.org'</span><span style=\"color: navy\">, </span> <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'CodeableConcept'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">code</span><span style=\"color: navy\">, </span> code.coding = <span style=\"color: maroon\">coding</span><span style=\"color: navy\">, </span> med.code = <span style=\"color: maroon\">code</span> <i>"setCode"</i><span style=\"color: navy\">;</span>\r\n lm<span style=\"color: navy\"><b> -> </b></span> <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Coding'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">coding</span><span style=\"color: navy\">, </span> coding.code = <span style=\"color: blue\">'unavailable'</span><span style=\"color: navy\">, </span> coding.system = <span style=\"color: blue\">'http://hl7.org/fhir/ValueSet/list-empty-reason'</span><span style=\"color: navy\">, </span> <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'CodeableConcept'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">code</span><span style=\"color: navy\">, </span> code.coding = <span style=\"color: maroon\">coding</span><span style=\"color: navy\">, </span> med.emptyReason = <span style=\"color: maroon\">code</span> <i>"setCode"</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><span style=\"color: navy\">// </span><span style=\"color: green\">create sectionAllergies</span>\r\n<b>group </b>createSectionAllergies<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">lm</span><span style=\"color: navy\"> : </span>DVCLogicalModel, <b>target</b> <span style=\"color: maroon\">all</span><span style=\"color: navy\"> : </span>BackboneElement, <b>source</b> <span style=\"color: maroon\">aid</span><span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span> aid<span style=\"color: navy\"><b> -> </b></span>all.id = <span style=\"color: maroon\">aid</span> <i>"setAllergyId"</i><span style=\"color: navy\">;</span>\r\n lm<span style=\"color: navy\"><b> -> </b></span>all.title = <span style=\"color: blue\">'Allergies Section'</span> <i>"setAllergyTitle"</i><span style=\"color: navy\">;</span>\r\n lm<span style=\"color: navy\"><b> -> </b></span>all.text<b> as </b><span style=\"color: maroon\">text</span><b> then </b>generateNarrativeText<span style=\"color: navy\">(</span><span style=\"color: maroon\">all</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">text</span><span style=\"color: navy\">)</span> <i>"setText"</i><span style=\"color: navy\">;</span>\r\n lm<span style=\"color: navy\"><b> -> </b></span> <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Coding'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">coding</span><span style=\"color: navy\">, </span> coding.code = <span style=\"color: blue\">'48765-2'</span><span style=\"color: navy\">, </span> coding.system = <span style=\"color: blue\">'http://loinc.org'</span><span style=\"color: navy\">, </span> <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'CodeableConcept'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">code</span><span style=\"color: navy\">, </span> code.coding = <span style=\"color: maroon\">coding</span><span style=\"color: navy\">, </span> all.code = <span style=\"color: maroon\">code</span> <i>"setCode"</i><span style=\"color: navy\">;</span>\r\n lm<span style=\"color: navy\"><b> -> </b></span> <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Coding'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">coding</span><span style=\"color: navy\">, </span> coding.code = <span style=\"color: blue\">'unavailable'</span><span style=\"color: navy\">, </span> coding.system = <span style=\"color: blue\">'http://hl7.org/fhir/ValueSet/list-empty-reason'</span><span style=\"color: navy\">, </span> <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'CodeableConcept'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">code</span><span style=\"color: navy\">, </span> code.coding = <span style=\"color: maroon\">coding</span><span style=\"color: navy\">, </span> all.emptyReason = <span style=\"color: maroon\">code</span> <i>"setCode"</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><span style=\"color: navy\">// </span><span style=\"color: green\">create sectionProblems</span>\r\n<b>group </b>createSectionProblems<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">lm</span><span style=\"color: navy\"> : </span>DVCLogicalModel, <b>target</b> <span style=\"color: maroon\">prb</span><span style=\"color: navy\"> : </span>BackboneElement, <b>source</b> <span style=\"color: maroon\">proid</span><span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span> proid<span style=\"color: navy\"><b> -> </b></span>prb.id = <span style=\"color: maroon\">proid</span> <i>"setProblemsId"</i><span style=\"color: navy\">;</span>\r\n lm<span style=\"color: navy\"><b> -> </b></span>prb.title = <span style=\"color: blue\">'Problems Section'</span> <i>"setProblemTitle"</i><span style=\"color: navy\">;</span>\r\n lm<span style=\"color: navy\"><b> -> </b></span>prb.text<b> as </b><span style=\"color: maroon\">text</span><b> then </b>generateNarrativeText<span style=\"color: navy\">(</span><span style=\"color: maroon\">prb</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">text</span><span style=\"color: navy\">)</span> <i>"setText"</i><span style=\"color: navy\">;</span>\r\n lm<span style=\"color: navy\"><b> -> </b></span> <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Coding'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">coding</span><span style=\"color: navy\">, </span> coding.code = <span style=\"color: blue\">'11450-4'</span><span style=\"color: navy\">, </span> coding.system = <span style=\"color: blue\">'http://loinc.org'</span><span style=\"color: navy\">, </span> <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'CodeableConcept'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">code</span><span style=\"color: navy\">, </span> code.coding = <span style=\"color: maroon\">coding</span><span style=\"color: navy\">, </span> prb.code = <span style=\"color: maroon\">code</span> <i>"setCode"</i><span style=\"color: navy\">;</span>\r\n lm<span style=\"color: navy\"><b> -> </b></span> <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Coding'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">coding</span><span style=\"color: navy\">, </span> coding.code = <span style=\"color: blue\">'unavailable'</span><span style=\"color: navy\">, </span> coding.system = <span style=\"color: blue\">'http://hl7.org/fhir/ValueSet/list-empty-reason'</span><span style=\"color: navy\">, </span> <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'CodeableConcept'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">code</span><span style=\"color: navy\">, </span> code.coding = <span style=\"color: maroon\">coding</span><span style=\"color: navy\">, </span> prb.emptyReason = <span style=\"color: maroon\">code</span> <i>"setCode"</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><span style=\"color: navy\">// </span><span style=\"color: green\">create sectionImmunizations</span>\r\n<b>group </b>createSectionImmunizations<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">lm</span><span style=\"color: navy\"> : </span>DVCLogicalModel, <b>target</b> <span style=\"color: maroon\">bundle</span><span style=\"color: navy\"> : </span>Bundle, <b>target</b> <span style=\"color: maroon\">composition</span><span style=\"color: navy\"> : </span>Composition, <b>source</b> <span style=\"color: maroon\">immid</span>, <b>source</b> <span style=\"color: maroon\">pid</span><span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span> lm<span style=\"color: navy\"><b> -> </b></span>composition.section<b> as </b><span style=\"color: maroon\">imm</span><b> then</b><span style=\"color: navy\"> {\r\n</span> immid<span style=\"color: navy\"><b> -> </b></span>imm.id = <span style=\"color: maroon\">immid</span> <i>"setImmunizationsId"</i><span style=\"color: navy\">;</span>\r\n lm<span style=\"color: navy\"><b> -> </b></span>imm.title = <span style=\"color: blue\">'Immunizations Section'</span> <i>"setImmunizationTitle"</i><span style=\"color: navy\">;</span>\r\n lm<span style=\"color: navy\"><b> -> </b></span>imm.text<b> as </b><span style=\"color: maroon\">text</span><b> then </b>generateNarrativeText<span style=\"color: navy\">(</span><span style=\"color: maroon\">imm</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">text</span><span style=\"color: navy\">)</span> <i>"setText"</i><span style=\"color: navy\">;</span>\r\n lm<span style=\"color: navy\"><b> -> </b></span> <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Coding'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">coding</span><span style=\"color: navy\">, </span> coding.code = <span style=\"color: blue\">'11369-6'</span><span style=\"color: navy\">, </span> coding.system = <span style=\"color: blue\">'http://loinc.org'</span><span style=\"color: navy\">, </span> <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'CodeableConcept'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">code</span><span style=\"color: navy\">, </span> code.coding = <span style=\"color: maroon\">coding</span><span style=\"color: navy\">, </span> imm.code = <span style=\"color: maroon\">code</span> <i>"setCode"</i><span style=\"color: navy\">;</span>\r\n lm.vaccineDetails<b> as </b><span style=\"color: maroon\">vax</span><span style=\"color: navy\"><b> -> </b></span> <b>uuid</b><span style=\"color: navy\">(</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">id</span><span style=\"color: navy\">, </span> bundle.entry<b> as </b><span style=\"color: maroon\">entry</span><span style=\"color: navy\">, </span> entry.fullUrl = <b>append</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'urn:uuid:'</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">id</span><span style=\"color: navy\">)</span><span style=\"color: navy\">, </span> imm.entry<b> as </b><span style=\"color: maroon\">sectionEntry</span><span style=\"color: navy\">, </span> sectionEntry.reference = <b>append</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'urn:uuid:'</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">id</span><span style=\"color: navy\">)</span><span style=\"color: navy\">, </span> entry.resource = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Immunization'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">immunization</span><span style=\"color: navy\">, </span> immunization.id = <span style=\"color: maroon\">id</span><b> then </b>createImmunizationResource<span style=\"color: navy\">(</span><span style=\"color: maroon\">vax</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">immunization</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">pid</span><span style=\"color: navy\">)</span> <i>"setImmz"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"set"</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><b>group </b>createImmunizationResource<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">vax</span><span style=\"color: navy\"> : </span>vaccineDetails, <b>target</b> <span style=\"color: maroon\">immunization</span><span style=\"color: navy\"> : </span>Immunization, <b>source</b> <span style=\"color: maroon\">pid</span><span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span> vax<span style=\"color: navy\"><b> -> </b></span>immunization.status = <span style=\"color: blue\">'completed'</span> <i>"setStatus"</i><span style=\"color: navy\">;</span>\r\n vax.vaccineClassification<b> as </b><span style=\"color: maroon\">vaccine</span><span style=\"color: navy\"><b> -> </b></span>immunization.vaccineCode = <span style=\"color: maroon\">vaccine</span> <i>"setvaccinecode"</i><span style=\"color: navy\">;</span>\r\n vax.date<b> as </b><span style=\"color: maroon\">date</span><span style=\"color: navy\"><b> -> </b></span>immunization.occurrence = <b>append</b><span style=\"color: navy\">(</span><span style=\"color: maroon\">date</span><span style=\"color: navy\">, </span><span style=\"color: blue\">'T00:00:00.000Z'</span><span style=\"color: navy\">)</span> <i>"setDate"</i><span style=\"color: navy\">;</span>\r\n vax.batchNo<b> as </b><span style=\"color: maroon\">batchNo</span><span style=\"color: navy\"><b> -> </b></span>immunization.lotNumber = <span style=\"color: maroon\">batchNo</span> <i>"setBatchNo"</i><span style=\"color: navy\">;</span>\r\n vax<span style=\"color: navy\"><b> -> </b></span>immunization.protocolApplied<b> as </b><span style=\"color: maroon\">protocol</span><b> then</b><span style=\"color: navy\"> {\r\n</span> vax.doseNumber<b> as </b><span style=\"color: maroon\">doseNo</span><b> then</b><span style=\"color: navy\"> {\r\n</span> doseNo.coding<b> as </b><span style=\"color: maroon\">coding</span><b> then</b><span style=\"color: navy\"> {\r\n</span> coding.code<b> as </b><span style=\"color: maroon\">code</span><span style=\"color: navy\"><b> -> </b></span>protocol.doseNumber = <span style=\"color: maroon\">code</span> <i>"setDoseNo"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"setDoseNo"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"setDoseNo"</i><span style=\"color: navy\">;</span>\r\n vax.disease<b> as </b><span style=\"color: maroon\">disease</span><span style=\"color: navy\"><b> -> </b></span> <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'CodeableConcept'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">code</span><span style=\"color: navy\">, </span> code.coding = <span style=\"color: maroon\">disease</span><span style=\"color: navy\">, </span> protocol.targetDisease = <span style=\"color: maroon\">code</span> <i>"setTargetDisease"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"setProtocolApplied"</i><span style=\"color: navy\">;</span>\r\n vax<span style=\"color: navy\"><b> -> </b></span> immunization.patient<b> as </b><span style=\"color: maroon\">subject</span><span style=\"color: navy\">, </span> subject.reference = <b>append</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'urn:uuid:'</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">pid</span><span style=\"color: navy\">)</span> <i>"setSubject"</i><span style=\"color: navy\">;</span>\r\n vax.manufacturerId<b> as </b><span style=\"color: maroon\">maId</span><span style=\"color: navy\"><b> -> </b></span> <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Reference'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">maRef</span><span style=\"color: navy\">, </span> maRef.identifier = <span style=\"color: maroon\">maId</span><span style=\"color: navy\">, </span> immunization.manufacturer = <span style=\"color: maroon\">maRef</span> <i>"set Manufacturer"</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><span style=\"color: navy\">// </span><span style=\"color: green\">helper function</span>\r\n<b>group </b>generateNarrativeText<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">src</span><span style=\"color: navy\"> : </span>Section, <b>target</b> <span style=\"color: maroon\">text</span><span style=\"color: navy\"> : </span>string<span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span> src<span style=\"color: navy\"><b> -> </b></span>text.status = <span style=\"color: blue\">'empty'</span> <i>"setstatus"</i><span style=\"color: navy\">;</span>\r\n src<span style=\"color: navy\"><b> -> </b></span>text.div = <span style=\"color: blue\">'<div xmlns=\\"http://www.w3.org/1999/xhtml\\">Narrative not available</div>'</span> <i>"setdiv"</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><b>group </b>nameToHumanName<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">sourceName</span>, <b>target</b> <span style=\"color: maroon\">targetName</span><span style=\"color: navy\"> : </span>HumanName<span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span> sourceName<b> as </b><span style=\"color: maroon\">patientName</span><span style=\"color: navy\"><b> -> </b></span>targetName.text = <span style=\"color: maroon\">patientName</span> <i>"Patient Name"</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><b>group </b>humanNameToHumanName<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">sourceName</span>, <b>target</b> <span style=\"color: maroon\">targetName</span><span style=\"color: navy\"> : </span>HumanName<span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span> sourceName.use<b> as </b><span style=\"color: maroon\">use</span><span style=\"color: navy\"><b> -> </b></span>targetName.use = <span style=\"color: maroon\">use</span> <i>"CopyUse"</i><span style=\"color: navy\">;</span>\r\n sourceName.text<b> as </b><span style=\"color: maroon\">text</span><span style=\"color: navy\"><b> -> </b></span>targetName.text = <span style=\"color: maroon\">text</span> <i>"CopyText"</i><span style=\"color: navy\">;</span>\r\n sourceName.family<b> as </b><span style=\"color: maroon\">family</span><span style=\"color: navy\"><b> -> </b></span>targetName.family = <span style=\"color: maroon\">family</span> <i>"CopyFamily"</i><span style=\"color: navy\">;</span>\r\n sourceName.given<b> as </b><span style=\"color: maroon\">given</span><span style=\"color: navy\"><b> -> </b></span>targetName.given = <span style=\"color: maroon\">given</span> <i>"CopyGiven"</i><span style=\"color: navy\">;</span>\r\n sourceName.prefix<b> as </b><span style=\"color: maroon\">prefix</span><span style=\"color: navy\"><b> -> </b></span>targetName.prefix = <span style=\"color: maroon\">prefix</span> <i>"CopyPrefix"</i><span style=\"color: navy\">;</span>\r\n sourceName.suffix<b> as </b><span style=\"color: maroon\">suffix</span><span style=\"color: navy\"><b> -> </b></span>targetName.suffix = <span style=\"color: maroon\">suffix</span> <i>"CopySuffix"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Copy the period using the previously defined group function</span>\r\n sourceName.period<b> as </b><span style=\"color: maroon\">sourcePeriod</span><span style=\"color: navy\"><b> -> </b></span>targetName.period<b> as </b><span style=\"color: maroon\">targetPeriod</span><b> then</b><span style=\"color: navy\"> {\r\n</span> sourcePeriod<b> then </b>periodToPeriod<span style=\"color: navy\">(</span><span style=\"color: maroon\">sourcePeriod</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">targetPeriod</span><span style=\"color: navy\">)</span> <i>"CopyPeriod"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"copyPeriod"</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><b>group </b>periodToPeriod<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">sourcePeriod</span>, <b>target</b> <span style=\"color: maroon\">targetPeriod</span><span style=\"color: navy\"> : </span>Period<span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span> sourcePeriod.start<b> as </b><span style=\"color: maroon\">start</span><span style=\"color: navy\"><b> -> </b></span>targetPeriod.start = <span style=\"color: maroon\">start</span> <i>"set period start"</i><span style=\"color: navy\">;</span>\r\n sourcePeriod.end<b> as </b><span style=\"color: maroon\">end</span><span style=\"color: navy\"><b> -> </b></span>targetPeriod.end = <span style=\"color: maroon\">end</span> <i>"set period end"</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span></pre></div>"
},
"url" : "http://smart.who.int/icvp/StructureMap/DVCLMToIPS",
"version" : "0.1.0",
"name" : "DVCLMToIPS",
"status" : "draft",
"date" : "2024-12-11T15:44:25+00:00",
"publisher" : "WHO",
"contact" : [
{
"name" : "WHO",
"telecom" : [
{
"system" : "url",
"value" : "http://who.int"
}
]
}
],
"structure" : [
{
"url" : "http://smart.who.int/icvp/StructureDefinition/ModelDVC",
"mode" : "source",
"alias" : "DVCLogicalModel"
},
{
"url" : "http://hl7.org/fhir/StructureDefinition/Bundle",
"mode" : "target",
"alias" : "IPS"
}
],
"group" : [
{
"name" : "DVCLMToIPS",
"typeMode" : "none",
"documentation" : "create Bundle",
"input" : [
{
"name" : "lm",
"type" : "DVCLogicalModel",
"mode" : "source"
},
{
"name" : "ips",
"type" : "IPS",
"mode" : "target"
}
],
"rule" : [
{
"name" : "setIPSType",
"source" : [
{
"context" : "lm"
}
],
"target" : [
{
"context" : "ips",
"contextType" : "variable",
"element" : "type",
"transform" : "copy",
"parameter" : [
{
"valueString" : "document"
}
]
}
]
},
{
"name" : "setId",
"source" : [
{
"context" : "lm"
}
],
"target" : [
{
"contextType" : "variable",
"variable" : "bid",
"transform" : "uuid"
},
{
"context" : "ips",
"contextType" : "variable",
"element" : "identifier",
"variable" : "id"
},
{
"context" : "id",
"contextType" : "variable",
"element" : "value",
"transform" : "copy",
"parameter" : [
{
"valueId" : "bid"
}
]
},
{
"context" : "id",
"contextType" : "variable",
"element" : "system",
"transform" : "copy",
"parameter" : [
{
"valueString" : "urn:oid:2.16.724.4.8.10.200.10"
}
]
}
]
},
{
"name" : "setEntries",
"source" : [
{
"context" : "lm"
}
],
"target" : [
{
"contextType" : "variable",
"variable" : "cid",
"transform" : "uuid"
},
{
"contextType" : "variable",
"variable" : "pid",
"transform" : "uuid"
},
{
"contextType" : "variable",
"variable" : "mid",
"transform" : "uuid"
},
{
"contextType" : "variable",
"variable" : "aid",
"transform" : "uuid"
},
{
"contextType" : "variable",
"variable" : "proid",
"transform" : "uuid"
},
{
"contextType" : "variable",
"variable" : "immid",
"transform" : "uuid"
}
],
"rule" : [
{
"name" : "mapCompositionResource",
"source" : [
{
"context" : "lm"
}
],
"target" : [
{
"context" : "ips",
"contextType" : "variable",
"element" : "entry",
"variable" : "entry"
},
{
"context" : "entry",
"contextType" : "variable",
"element" : "resource",
"variable" : "composition",
"transform" : "create",
"parameter" : [
{
"valueString" : "Composition"
}
]
},
{
"context" : "entry",
"contextType" : "variable",
"element" : "fullUrl",
"transform" : "append",
"parameter" : [
{
"valueString" : "urn:uuid:"
},
{
"valueId" : "cid"
}
]
}
],
"rule" : [
{
"name" : "set LmToComposition",
"source" : [
{
"context" : "lm"
}
],
"dependent" : [
{
"name" : "LmToComposition",
"variable" : [
"lm",
"ips",
"composition",
"cid",
"pid",
"mid",
"aid",
"proid",
"immid"
]
}
]
},
{
"name" : "mapPatientResource",
"source" : [
{
"context" : "lm"
}
],
"target" : [
{
"context" : "ips",
"contextType" : "variable",
"element" : "entry",
"variable" : "entry"
},
{
"context" : "entry",
"contextType" : "variable",
"element" : "fullUrl",
"transform" : "append",
"parameter" : [
{
"valueString" : "urn:uuid:"
},
{
"valueId" : "pid"
}
]
},
{
"contextType" : "variable",
"variable" : "patient",
"transform" : "create",
"parameter" : [
{
"valueString" : "Patient"
}
]
}
],
"rule" : [
{
"name" : "createPatient",
"source" : [
{
"context" : "lm"
}
],
"dependent" : [
{
"name" : "DemographicsToPatient",
"variable" : [
"lm",
"patient",
"pid"
]
}
]
},
{
"name" : "setPatientEntry",
"source" : [
{
"context" : "lm"
}
],
"target" : [
{
"context" : "entry",
"contextType" : "variable",
"element" : "resource",
"transform" : "copy",
"parameter" : [
{
"valueId" : "patient"
}
]
}
]
}
]
},
{
"name" : "ss",
"source" : [
{
"context" : "lm",
"element" : "issuer",
"variable" : "issuer"
}
],
"rule" : [
{
"name" : "mapOrganizationResource",
"source" : [
{
"context" : "issuer",
"element" : "reference",
"variable" : "id"
}
],
"target" : [
{
"context" : "ips",
"contextType" : "variable",
"element" : "entry",
"variable" : "entry"
},
{
"context" : "entry",
"contextType" : "variable",
"element" : "fullUrl",
"transform" : "append",
"parameter" : [
{
"valueString" : "urn:uuid:"
},
{
"valueId" : "id"
}
]
},
{
"contextType" : "variable",
"variable" : "organization",
"transform" : "create",
"parameter" : [
{
"valueString" : "Organization"
}
]
}
],
"rule" : [
{
"name" : "createOrganization",
"source" : [
{
"context" : "lm"
}
],
"target" : [
{
"context" : "organization",
"contextType" : "variable"
}
],
"dependent" : [
{
"name" : "createAuthor",
"variable" : [
"issuer",
"organization"
]
}
]
},
{
"name" : "setOrganizationEntry",
"source" : [
{
"context" : "lm"
}
],
"target" : [
{
"context" : "entry",
"contextType" : "variable",
"element" : "resource",
"transform" : "copy",
"parameter" : [
{
"valueId" : "organization"
}
]
}
]
}
]
}
]
}
]
}
]
}
]
},
{
"name" : "LmToComposition",
"typeMode" : "none",
"documentation" : "create Composition",
"input" : [
{
"name" : "lm",
"type" : "DVCLogicalModel",
"mode" : "source"
},
{
"name" : "ips",
"type" : "Bundle",
"mode" : "target"
},
{
"name" : "composition",
"type" : "Composition",
"mode" : "target"
},
{
"name" : "cid",
"mode" : "source"
},
{
"name" : "pid",
"mode" : "source"
},
{
"name" : "mid",
"mode" : "source"
},
{
"name" : "aid",
"mode" : "source"
},
{
"name" : "proid",
"mode" : "source"
},
{
"name" : "immid",
"mode" : "source"
}
],
"rule" : [
{
"name" : "setCid",
"source" : [
{
"context" : "cid"
}
],
"target" : [
{
"context" : "composition",
"contextType" : "variable",
"element" : "id",
"transform" : "copy",
"parameter" : [
{
"valueId" : "cid"
}
]
}
]
},
{
"name" : "setStatus",
"source" : [
{
"context" : "lm"
}
],
"target" : [
{
"context" : "composition",
"contextType" : "variable",
"element" : "status",
"transform" : "copy",
"parameter" : [
{
"valueString" : "final"
}
]
}
]
},
{
"name" : "setTitle",
"source" : [
{
"context" : "lm"
}
],
"target" : [
{
"context" : "composition",
"contextType" : "variable",
"element" : "title",
"transform" : "copy",
"parameter" : [
{
"valueString" : "International Patient Summary"
}
]
}
]
},
{
"name" : "setType",
"source" : [
{
"context" : "lm"
}
],
"target" : [
{
"contextType" : "variable",
"variable" : "coding",
"transform" : "create",
"parameter" : [
{
"valueString" : "Coding"
}
]
},
{
"context" : "coding",
"contextType" : "variable",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueString" : "60591-5"
}
]
},
{
"context" : "coding",
"contextType" : "variable",
"element" : "system",
"transform" : "copy",
"parameter" : [
{
"valueString" : "http://loinc.org"
}
]
},
{
"contextType" : "variable",
"variable" : "code",
"transform" : "create",
"parameter" : [
{
"valueString" : "CodeableConcept"
}
]
},
{
"context" : "code",
"contextType" : "variable",
"element" : "coding",
"transform" : "copy",
"parameter" : [
{
"valueId" : "coding"
}
]
},
{
"context" : "composition",
"contextType" : "variable",
"element" : "type",
"transform" : "copy",
"parameter" : [
{
"valueId" : "code"
}
]
}
]
},
{
"name" : "setSubject",
"source" : [
{
"context" : "lm"
}
],
"target" : [
{
"context" : "composition",
"contextType" : "variable",
"element" : "subject",
"variable" : "subject"
}
],
"rule" : [
{
"name" : "setSubject",
"source" : [
{
"context" : "lm"
}
],
"target" : [
{
"context" : "subject",
"contextType" : "variable",
"element" : "reference",
"transform" : "append",
"parameter" : [
{
"valueString" : "urn:uuid:"
},
{
"valueId" : "pid"
}
]
}
]
}
]
},
{
"name" : "setid",
"source" : [
{
"context" : "lm",
"element" : "issuer",
"variable" : "issuer"
}
],
"rule" : [
{
"name" : "setauthr",
"source" : [
{
"context" : "issuer",
"element" : "reference",
"variable" : "id"
}
],
"target" : [
{
"context" : "composition",
"contextType" : "variable",
"element" : "author",
"variable" : "author"
}
],
"rule" : [
{
"name" : "setAuthor",
"source" : [
{
"context" : "id"
}
],
"target" : [
{
"context" : "author",
"contextType" : "variable",
"element" : "reference",
"transform" : "append",
"parameter" : [
{
"valueString" : "urn:uuid:"
},
{
"valueId" : "id"
}
]
}
]
}
]
}
]
},
{
"name" : "createMedication",
"source" : [
{
"context" : "lm"
}
],
"target" : [
{
"context" : "composition",
"contextType" : "variable",
"element" : "section",
"variable" : "medication"
}
],
"dependent" : [
{
"name" : "createSectionMedications",
"variable" : [
"lm",
"medication",
"mid"
]
}
]
},
{
"name" : "createAllergies",
"source" : [
{
"context" : "lm"
}
],
"target" : [
{
"context" : "composition",
"contextType" : "variable",
"element" : "section",
"variable" : "allergies"
}
],
"dependent" : [
{
"name" : "createSectionAllergies",
"variable" : [
"lm",
"allergies",
"aid"
]
}
]
},
{
"name" : "createProblems",
"source" : [
{
"context" : "lm"
}
],
"target" : [
{
"context" : "composition",
"contextType" : "variable",
"element" : "section",
"variable" : "problems"
}
],
"dependent" : [
{
"name" : "createSectionProblems",
"variable" : [
"lm",
"problems",
"proid"
]
}
]
},
{
"name" : "createImmunizations",
"source" : [
{
"context" : "lm"
}
],
"dependent" : [
{
"name" : "createSectionImmunizations",
"variable" : [
"lm",
"ips",
"composition",
"immid",
"pid"
]
}
]
}
]
},
{
"name" : "DemographicsToPatient",
"typeMode" : "none",
"documentation" : "create Patient",
"input" : [
{
"name" : "lm",
"type" : "DVCLogicalModel",
"mode" : "source"
},
{
"name" : "patient",
"type" : "Patient",
"mode" : "target"
},
{
"name" : "pid",
"mode" : "source"
}
],
"rule" : [
{
"name" : "setPatientId",
"source" : [
{
"context" : "pid"
}
],
"target" : [
{
"context" : "patient",
"contextType" : "variable",
"element" : "id",
"transform" : "copy",
"parameter" : [
{
"valueId" : "pid"
}
]
}
]
},
{
"name" : "Setname",
"source" : [
{
"context" : "lm",
"element" : "name",
"variable" : "sourceName"
}
],
"target" : [
{
"context" : "patient",
"contextType" : "variable",
"element" : "name",
"variable" : "targetName"
}
],
"dependent" : [
{
"name" : "nameToHumanName",
"variable" : [
"sourceName",
"targetName"
]
}
]
},
{
"name" : "setDateofBirth",
"source" : [
{
"context" : "lm",
"element" : "dob",
"variable" : "dob"
}
],
"target" : [
{
"context" : "patient",
"contextType" : "variable",
"element" : "birthDate",
"transform" : "copy",
"parameter" : [
{
"valueId" : "dob"
}
]
}
]
},
{
"name" : "Patient Gender",
"source" : [
{
"context" : "lm",
"element" : "sex",
"variable" : "sex"
}
],
"dependent" : [
{
"name" : "ExtractGender",
"variable" : [
"sex",
"patient"
]
}
]
},
{
"name" : "setNationalIdentifier",
"source" : [
{
"context" : "lm",
"element" : "nid",
"variable" : "id"
}
],
"target" : [
{
"context" : "patient",
"contextType" : "variable",
"element" : "identifier",
"variable" : "identifier"
},
{
"context" : "identifier",
"contextType" : "variable",
"element" : "value",
"transform" : "copy",
"parameter" : [
{
"valueId" : "id"
}
]
}
]
},
{
"name" : "setGuardianName",
"source" : [
{
"context" : "lm",
"element" : "guardian",
"variable" : "guardian"
}
],
"target" : [
{
"context" : "patient",
"contextType" : "variable",
"element" : "contact",
"variable" : "parentContact"
},
{
"context" : "parentContact",
"contextType" : "variable",
"element" : "name",
"variable" : "parentName"
}
],
"dependent" : [
{
"name" : "nameToHumanName",
"variable" : [
"guardian",
"parentName"
]
}
]
}
]
},
{
"name" : "ExtractGender",
"typeMode" : "none",
"documentation" : "deals with short and case sensitive codes",
"input" : [
{
"name" : "sex",
"mode" : "source"
},
{
"name" : "patient",
"type" : "Patient",
"mode" : "target"
}
],
"rule" : [
{
"name" : "set male",
"source" : [
{
"context" : "sex",
"condition" : "(sex = 'M')"
}
],
"target" : [
{
"context" : "patient",
"contextType" : "variable",
"element" : "gender",
"transform" : "copy",
"parameter" : [
{
"valueString" : "male"
}
]
}
]
},
{
"name" : "set female",
"source" : [
{
"context" : "sex",
"condition" : "(sex = 'F')"
}
],
"target" : [
{
"context" : "patient",
"contextType" : "variable",
"element" : "gender",
"transform" : "copy",
"parameter" : [
{
"valueString" : "female"
}
]
}
]
},
{
"name" : "set male",
"source" : [
{
"context" : "sex",
"condition" : "(sex = 'm')"
}
],
"target" : [
{
"context" : "patient",
"contextType" : "variable",
"element" : "gender",
"transform" : "copy",
"parameter" : [
{
"valueString" : "male"
}
]
}
]
},
{
"name" : "set female",
"source" : [
{
"context" : "sex",
"condition" : "(sex = 'f')"
}
],
"target" : [
{
"context" : "patient",
"contextType" : "variable",
"element" : "gender",
"transform" : "copy",
"parameter" : [
{
"valueString" : "female"
}
]
}
]
},
{
"name" : "set male",
"source" : [
{
"context" : "sex",
"condition" : "(sex = 'Male')"
}
],
"target" : [
{
"context" : "patient",
"contextType" : "variable",
"element" : "gender",
"transform" : "copy",
"parameter" : [
{
"valueString" : "male"
}
]
}
]
},
{
"name" : "set female",
"source" : [
{
"context" : "sex",
"condition" : "(sex = 'Female')"
}
],
"target" : [
{
"context" : "patient",
"contextType" : "variable",
"element" : "gender",
"transform" : "copy",
"parameter" : [
{
"valueString" : "female"
}
]
}
]
},
{
"name" : "set male",
"source" : [
{
"context" : "sex",
"condition" : "(sex = 'male')"
}
],
"target" : [
{
"context" : "patient",
"contextType" : "variable",
"element" : "gender",
"transform" : "copy",
"parameter" : [
{
"valueString" : "male"
}
]
}
]
},
{
"name" : "set female",
"source" : [
{
"context" : "sex",
"condition" : "(sex = 'female')"
}
],
"target" : [
{
"context" : "patient",
"contextType" : "variable",
"element" : "gender",
"transform" : "copy",
"parameter" : [
{
"valueString" : "female"
}
]
}
]
}
]
},
{
"name" : "createAuthor",
"typeMode" : "none",
"documentation" : "create author",
"input" : [
{
"name" : "issuer",
"mode" : "source"
},
{
"name" : "org",
"type" : "Organization",
"mode" : "target"
}
],
"rule" : [
{
"name" : "setID",
"source" : [
{
"context" : "issuer",
"element" : "reference",
"variable" : "id"
}
],
"target" : [
{
"context" : "org",
"contextType" : "variable",
"element" : "id",
"transform" : "copy",
"parameter" : [
{
"valueId" : "id"
}
]
}
]
}
]
},
{
"name" : "createSectionMedications",
"typeMode" : "none",
"documentation" : "create sectionMedications",
"input" : [
{
"name" : "lm",
"type" : "DVCLogicalModel",
"mode" : "source"
},
{
"name" : "med",
"type" : "BackboneElement",
"mode" : "target"
},
{
"name" : "mid",
"mode" : "source"
}
],
"rule" : [
{
"name" : "setmedicationid",
"source" : [
{
"context" : "mid"
}
],
"target" : [
{
"context" : "med",
"contextType" : "variable",
"element" : "id",
"transform" : "copy",
"parameter" : [
{
"valueId" : "mid"
}
]
}
]
},
{
"name" : "setMedicationTitle",
"source" : [
{
"context" : "lm"
}
],
"target" : [
{
"context" : "med",
"contextType" : "variable",
"element" : "title",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Medication Summary Section"
}
]
}
]
},
{
"name" : "setText",
"source" : [
{
"context" : "lm"
}
],
"target" : [
{
"context" : "med",
"contextType" : "variable",
"element" : "text",
"variable" : "text"
}
],
"dependent" : [
{
"name" : "generateNarrativeText",
"variable" : [
"med",
"text"
]
}
]
},
{
"name" : "setCode",
"source" : [
{
"context" : "lm"
}
],
"target" : [
{
"contextType" : "variable",
"variable" : "coding",
"transform" : "create",
"parameter" : [
{
"valueString" : "Coding"
}
]
},
{
"context" : "coding",
"contextType" : "variable",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueString" : "10160-0"
}
]
},
{
"context" : "coding",
"contextType" : "variable",
"element" : "system",
"transform" : "copy",
"parameter" : [
{
"valueString" : "http://loinc.org"
}
]
},
{
"contextType" : "variable",
"variable" : "code",
"transform" : "create",
"parameter" : [
{
"valueString" : "CodeableConcept"
}
]
},
{
"context" : "code",
"contextType" : "variable",
"element" : "coding",
"transform" : "copy",
"parameter" : [
{
"valueId" : "coding"
}
]
},
{
"context" : "med",
"contextType" : "variable",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueId" : "code"
}
]
}
]
},
{
"name" : "setCode",
"source" : [
{
"context" : "lm"
}
],
"target" : [
{
"contextType" : "variable",
"variable" : "coding",
"transform" : "create",
"parameter" : [
{
"valueString" : "Coding"
}
]
},
{
"context" : "coding",
"contextType" : "variable",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueString" : "unavailable"
}
]
},
{
"context" : "coding",
"contextType" : "variable",
"element" : "system",
"transform" : "copy",
"parameter" : [
{
"valueString" : "http://hl7.org/fhir/ValueSet/list-empty-reason"
}
]
},
{
"contextType" : "variable",
"variable" : "code",
"transform" : "create",
"parameter" : [
{
"valueString" : "CodeableConcept"
}
]
},
{
"context" : "code",
"contextType" : "variable",
"element" : "coding",
"transform" : "copy",
"parameter" : [
{
"valueId" : "coding"
}
]
},
{
"context" : "med",
"contextType" : "variable",
"element" : "emptyReason",
"transform" : "copy",
"parameter" : [
{
"valueId" : "code"
}
]
}
]
}
]
},
{
"name" : "createSectionAllergies",
"typeMode" : "none",
"documentation" : "create sectionAllergies",
"input" : [
{
"name" : "lm",
"type" : "DVCLogicalModel",
"mode" : "source"
},
{
"name" : "all",
"type" : "BackboneElement",
"mode" : "target"
},
{
"name" : "aid",
"mode" : "source"
}
],
"rule" : [
{
"name" : "setAllergyId",
"source" : [
{
"context" : "aid"
}
],
"target" : [
{
"context" : "all",
"contextType" : "variable",
"element" : "id",
"transform" : "copy",
"parameter" : [
{
"valueId" : "aid"
}
]
}
]
},
{
"name" : "setAllergyTitle",
"source" : [
{
"context" : "lm"
}
],
"target" : [
{
"context" : "all",
"contextType" : "variable",
"element" : "title",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Allergies Section"
}
]
}
]
},
{
"name" : "setText",
"source" : [
{
"context" : "lm"
}
],
"target" : [
{
"context" : "all",
"contextType" : "variable",
"element" : "text",
"variable" : "text"
}
],
"dependent" : [
{
"name" : "generateNarrativeText",
"variable" : [
"all",
"text"
]
}
]
},
{
"name" : "setCode",
"source" : [
{
"context" : "lm"
}
],
"target" : [
{
"contextType" : "variable",
"variable" : "coding",
"transform" : "create",
"parameter" : [
{
"valueString" : "Coding"
}
]
},
{
"context" : "coding",
"contextType" : "variable",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueString" : "48765-2"
}
]
},
{
"context" : "coding",
"contextType" : "variable",
"element" : "system",
"transform" : "copy",
"parameter" : [
{
"valueString" : "http://loinc.org"
}
]
},
{
"contextType" : "variable",
"variable" : "code",
"transform" : "create",
"parameter" : [
{
"valueString" : "CodeableConcept"
}
]
},
{
"context" : "code",
"contextType" : "variable",
"element" : "coding",
"transform" : "copy",
"parameter" : [
{
"valueId" : "coding"
}
]
},
{
"context" : "all",
"contextType" : "variable",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueId" : "code"
}
]
}
]
},
{
"name" : "setCode",
"source" : [
{
"context" : "lm"
}
],
"target" : [
{
"contextType" : "variable",
"variable" : "coding",
"transform" : "create",
"parameter" : [
{
"valueString" : "Coding"
}
]
},
{
"context" : "coding",
"contextType" : "variable",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueString" : "unavailable"
}
]
},
{
"context" : "coding",
"contextType" : "variable",
"element" : "system",
"transform" : "copy",
"parameter" : [
{
"valueString" : "http://hl7.org/fhir/ValueSet/list-empty-reason"
}
]
},
{
"contextType" : "variable",
"variable" : "code",
"transform" : "create",
"parameter" : [
{
"valueString" : "CodeableConcept"
}
]
},
{
"context" : "code",
"contextType" : "variable",
"element" : "coding",
"transform" : "copy",
"parameter" : [
{
"valueId" : "coding"
}
]
},
{
"context" : "all",
"contextType" : "variable",
"element" : "emptyReason",
"transform" : "copy",
"parameter" : [
{
"valueId" : "code"
}
]
}
]
}
]
},
{
"name" : "createSectionProblems",
"typeMode" : "none",
"documentation" : "create sectionProblems",
"input" : [
{
"name" : "lm",
"type" : "DVCLogicalModel",
"mode" : "source"
},
{
"name" : "prb",
"type" : "BackboneElement",
"mode" : "target"
},
{
"name" : "proid",
"mode" : "source"
}
],
"rule" : [
{
"name" : "setProblemsId",
"source" : [
{
"context" : "proid"
}
],
"target" : [
{
"context" : "prb",
"contextType" : "variable",
"element" : "id",
"transform" : "copy",
"parameter" : [
{
"valueId" : "proid"
}
]
}
]
},
{
"name" : "setProblemTitle",
"source" : [
{
"context" : "lm"
}
],
"target" : [
{
"context" : "prb",
"contextType" : "variable",
"element" : "title",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Problems Section"
}
]
}
]
},
{
"name" : "setText",
"source" : [
{
"context" : "lm"
}
],
"target" : [
{
"context" : "prb",
"contextType" : "variable",
"element" : "text",
"variable" : "text"
}
],
"dependent" : [
{
"name" : "generateNarrativeText",
"variable" : [
"prb",
"text"
]
}
]
},
{
"name" : "setCode",
"source" : [
{
"context" : "lm"
}
],
"target" : [
{
"contextType" : "variable",
"variable" : "coding",
"transform" : "create",
"parameter" : [
{
"valueString" : "Coding"
}
]
},
{
"context" : "coding",
"contextType" : "variable",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueString" : "11450-4"
}
]
},
{
"context" : "coding",
"contextType" : "variable",
"element" : "system",
"transform" : "copy",
"parameter" : [
{
"valueString" : "http://loinc.org"
}
]
},
{
"contextType" : "variable",
"variable" : "code",
"transform" : "create",
"parameter" : [
{
"valueString" : "CodeableConcept"
}
]
},
{
"context" : "code",
"contextType" : "variable",
"element" : "coding",
"transform" : "copy",
"parameter" : [
{
"valueId" : "coding"
}
]
},
{
"context" : "prb",
"contextType" : "variable",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueId" : "code"
}
]
}
]
},
{
"name" : "setCode",
"source" : [
{
"context" : "lm"
}
],
"target" : [
{
"contextType" : "variable",
"variable" : "coding",
"transform" : "create",
"parameter" : [
{
"valueString" : "Coding"
}
]
},
{
"context" : "coding",
"contextType" : "variable",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueString" : "unavailable"
}
]
},
{
"context" : "coding",
"contextType" : "variable",
"element" : "system",
"transform" : "copy",
"parameter" : [
{
"valueString" : "http://hl7.org/fhir/ValueSet/list-empty-reason"
}
]
},
{
"contextType" : "variable",
"variable" : "code",
"transform" : "create",
"parameter" : [
{
"valueString" : "CodeableConcept"
}
]
},
{
"context" : "code",
"contextType" : "variable",
"element" : "coding",
"transform" : "copy",
"parameter" : [
{
"valueId" : "coding"
}
]
},
{
"context" : "prb",
"contextType" : "variable",
"element" : "emptyReason",
"transform" : "copy",
"parameter" : [
{
"valueId" : "code"
}
]
}
]
}
]
},
{
"name" : "createSectionImmunizations",
"typeMode" : "none",
"documentation" : "create sectionImmunizations",
"input" : [
{
"name" : "lm",
"type" : "DVCLogicalModel",
"mode" : "source"
},
{
"name" : "bundle",
"type" : "Bundle",
"mode" : "target"
},
{
"name" : "composition",
"type" : "Composition",
"mode" : "target"
},
{
"name" : "immid",
"mode" : "source"
},
{
"name" : "pid",
"mode" : "source"
}
],
"rule" : [
{
"name" : "set",
"source" : [
{
"context" : "lm"
}
],
"target" : [
{
"context" : "composition",
"contextType" : "variable",
"element" : "section",
"variable" : "imm"
}
],
"rule" : [
{
"name" : "setImmunizationsId",
"source" : [
{
"context" : "immid"
}
],
"target" : [
{
"context" : "imm",
"contextType" : "variable",
"element" : "id",
"transform" : "copy",
"parameter" : [
{
"valueId" : "immid"
}
]
}
]
},
{
"name" : "setImmunizationTitle",
"source" : [
{
"context" : "lm"
}
],
"target" : [
{
"context" : "imm",
"contextType" : "variable",
"element" : "title",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Immunizations Section"
}
]
}
]
},
{
"name" : "setText",
"source" : [
{
"context" : "lm"
}
],
"target" : [
{
"context" : "imm",
"contextType" : "variable",
"element" : "text",
"variable" : "text"
}
],
"dependent" : [
{
"name" : "generateNarrativeText",
"variable" : [
"imm",
"text"
]
}
]
},
{
"name" : "setCode",
"source" : [
{
"context" : "lm"
}
],
"target" : [
{
"contextType" : "variable",
"variable" : "coding",
"transform" : "create",
"parameter" : [
{
"valueString" : "Coding"
}
]
},
{
"context" : "coding",
"contextType" : "variable",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueString" : "11369-6"
}
]
},
{
"context" : "coding",
"contextType" : "variable",
"element" : "system",
"transform" : "copy",
"parameter" : [
{
"valueString" : "http://loinc.org"
}
]
},
{
"contextType" : "variable",
"variable" : "code",
"transform" : "create",
"parameter" : [
{
"valueString" : "CodeableConcept"
}
]
},
{
"context" : "code",
"contextType" : "variable",
"element" : "coding",
"transform" : "copy",
"parameter" : [
{
"valueId" : "coding"
}
]
},
{
"context" : "imm",
"contextType" : "variable",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueId" : "code"
}
]
}
]
},
{
"name" : "setImmz",
"source" : [
{
"context" : "lm",
"element" : "vaccineDetails",
"variable" : "vax"
}
],
"target" : [
{
"contextType" : "variable",
"variable" : "id",
"transform" : "uuid"
},
{
"context" : "bundle",
"contextType" : "variable",
"element" : "entry",
"variable" : "entry"
},
{
"context" : "entry",
"contextType" : "variable",
"element" : "fullUrl",
"transform" : "append",
"parameter" : [
{
"valueString" : "urn:uuid:"
},
{
"valueId" : "id"
}
]
},
{
"context" : "imm",
"contextType" : "variable",
"element" : "entry",
"variable" : "sectionEntry"
},
{
"context" : "sectionEntry",
"contextType" : "variable",
"element" : "reference",
"transform" : "append",
"parameter" : [
{
"valueString" : "urn:uuid:"
},
{
"valueId" : "id"
}
]
},
{
"context" : "entry",
"contextType" : "variable",
"element" : "resource",
"variable" : "immunization",
"transform" : "create",
"parameter" : [
{
"valueString" : "Immunization"
}
]
},
{
"context" : "immunization",
"contextType" : "variable",
"element" : "id",
"transform" : "copy",
"parameter" : [
{
"valueId" : "id"
}
]
}
],
"dependent" : [
{
"name" : "createImmunizationResource",
"variable" : [
"vax",
"immunization",
"pid"
]
}
]
}
]
}
]
},
{
"name" : "createImmunizationResource",
"typeMode" : "none",
"input" : [
{
"name" : "vax",
"type" : "vaccineDetails",
"mode" : "source"
},
{
"name" : "immunization",
"type" : "Immunization",
"mode" : "target"
},
{
"name" : "pid",
"mode" : "source"
}
],
"rule" : [
{
"name" : "setStatus",
"source" : [
{
"context" : "vax"
}
],
"target" : [
{
"context" : "immunization",
"contextType" : "variable",
"element" : "status",
"transform" : "copy",
"parameter" : [
{
"valueString" : "completed"
}
]
}
]
},
{
"name" : "setvaccinecode",
"source" : [
{
"context" : "vax",
"element" : "vaccineClassification",
"variable" : "vaccine"
}
],
"target" : [
{
"context" : "immunization",
"contextType" : "variable",
"element" : "vaccineCode",
"transform" : "copy",
"parameter" : [
{
"valueId" : "vaccine"
}
]
}
]
},
{
"name" : "setDate",
"source" : [
{
"context" : "vax",
"element" : "date",
"variable" : "date"
}
],
"target" : [
{
"context" : "immunization",
"contextType" : "variable",
"element" : "occurrence",
"transform" : "append",
"parameter" : [
{
"valueId" : "date"
},
{
"valueString" : "T00:00:00.000Z"
}
]
}
]
},
{
"name" : "setBatchNo",
"source" : [
{
"context" : "vax",
"element" : "batchNo",
"variable" : "batchNo"
}
],
"target" : [
{
"context" : "immunization",
"contextType" : "variable",
"element" : "lotNumber",
"transform" : "copy",
"parameter" : [
{
"valueId" : "batchNo"
}
]
}
]
},
{
"name" : "setProtocolApplied",
"source" : [
{
"context" : "vax"
}
],
"target" : [
{
"context" : "immunization",
"contextType" : "variable",
"element" : "protocolApplied",
"variable" : "protocol"
}
],
"rule" : [
{
"name" : "setDoseNo",
"source" : [
{
"context" : "vax",
"element" : "doseNumber",
"variable" : "doseNo"
}
],
"rule" : [
{
"name" : "setDoseNo",
"source" : [
{
"context" : "doseNo",
"element" : "coding",
"variable" : "coding"
}
],
"rule" : [
{
"name" : "setDoseNo",
"source" : [
{
"context" : "coding",
"element" : "code",
"variable" : "code"
}
],
"target" : [
{
"context" : "protocol",
"contextType" : "variable",
"element" : "doseNumber",
"transform" : "copy",
"parameter" : [
{
"valueId" : "code"
}
]
}
]
}
]
}
]
},
{
"name" : "setTargetDisease",
"source" : [
{
"context" : "vax",
"element" : "disease",
"variable" : "disease"
}
],
"target" : [
{
"contextType" : "variable",
"variable" : "code",
"transform" : "create",
"parameter" : [
{
"valueString" : "CodeableConcept"
}
]
},
{
"context" : "code",
"contextType" : "variable",
"element" : "coding",
"transform" : "copy",
"parameter" : [
{
"valueId" : "disease"
}
]
},
{
"context" : "protocol",
"contextType" : "variable",
"element" : "targetDisease",
"transform" : "copy",
"parameter" : [
{
"valueId" : "code"
}
]
}
]
}
]
},
{
"name" : "setSubject",
"source" : [
{
"context" : "vax"
}
],
"target" : [
{
"context" : "immunization",
"contextType" : "variable",
"element" : "patient",
"variable" : "subject"
},
{
"context" : "subject",
"contextType" : "variable",
"element" : "reference",
"transform" : "append",
"parameter" : [
{
"valueString" : "urn:uuid:"
},
{
"valueId" : "pid"
}
]
}
]
},
{
"name" : "set Manufacturer",
"source" : [
{
"context" : "vax",
"element" : "manufacturerId",
"variable" : "maId"
}
],
"target" : [
{
"contextType" : "variable",
"variable" : "maRef",
"transform" : "create",
"parameter" : [
{
"valueString" : "Reference"
}
]
},
{
"context" : "maRef",
"contextType" : "variable",
"element" : "identifier",
"transform" : "copy",
"parameter" : [
{
"valueId" : "maId"
}
]
},
{
"context" : "immunization",
"contextType" : "variable",
"element" : "manufacturer",
"transform" : "copy",
"parameter" : [
{
"valueId" : "maRef"
}
]
}
]
}
]
},
{
"name" : "generateNarrativeText",
"typeMode" : "none",
"documentation" : "helper function",
"input" : [
{
"name" : "src",
"type" : "Section",
"mode" : "source"
},
{
"name" : "text",
"type" : "string",
"mode" : "target"
}
],
"rule" : [
{
"name" : "setstatus",
"source" : [
{
"context" : "src"
}
],
"target" : [
{
"context" : "text",
"contextType" : "variable",
"element" : "status",
"transform" : "copy",
"parameter" : [
{
"valueString" : "empty"
}
]
}
]
},
{
"name" : "setdiv",
"source" : [
{
"context" : "src"
}
],
"target" : [
{
"context" : "text",
"contextType" : "variable",
"element" : "div",
"transform" : "copy",
"parameter" : [
{
"valueString" : "<div xmlns=\"http://www.w3.org/1999/xhtml\">Narrative not available</div>"
}
]
}
]
}
]
},
{
"name" : "nameToHumanName",
"typeMode" : "none",
"input" : [
{
"name" : "sourceName",
"mode" : "source"
},
{
"name" : "targetName",
"type" : "HumanName",
"mode" : "target"
}
],
"rule" : [
{
"name" : "Patient Name",
"source" : [
{
"context" : "sourceName",
"variable" : "patientName"
}
],
"target" : [
{
"context" : "targetName",
"contextType" : "variable",
"element" : "text",
"transform" : "copy",
"parameter" : [
{
"valueId" : "patientName"
}
]
}
]
}
]
},
{
"name" : "humanNameToHumanName",
"typeMode" : "none",
"input" : [
{
"name" : "sourceName",
"mode" : "source"
},
{
"name" : "targetName",
"type" : "HumanName",
"mode" : "target"
}
],
"rule" : [
{
"name" : "CopyUse",
"source" : [
{
"context" : "sourceName",
"element" : "use",
"variable" : "use"
}
],
"target" : [
{
"context" : "targetName",
"contextType" : "variable",
"element" : "use",
"transform" : "copy",
"parameter" : [
{
"valueId" : "use"
}
]
}
]
},
{
"name" : "CopyText",
"source" : [
{
"context" : "sourceName",
"element" : "text",
"variable" : "text"
}
],
"target" : [
{
"context" : "targetName",
"contextType" : "variable",
"element" : "text",
"transform" : "copy",
"parameter" : [
{
"valueId" : "text"
}
]
}
]
},
{
"name" : "CopyFamily",
"source" : [
{
"context" : "sourceName",
"element" : "family",
"variable" : "family"
}
],
"target" : [
{
"context" : "targetName",
"contextType" : "variable",
"element" : "family",
"transform" : "copy",
"parameter" : [
{
"valueId" : "family"
}
]
}
]
},
{
"name" : "CopyGiven",
"source" : [
{
"context" : "sourceName",
"element" : "given",
"variable" : "given"
}
],
"target" : [
{
"context" : "targetName",
"contextType" : "variable",
"element" : "given",
"transform" : "copy",
"parameter" : [
{
"valueId" : "given"
}
]
}
]
},
{
"name" : "CopyPrefix",
"source" : [
{
"context" : "sourceName",
"element" : "prefix",
"variable" : "prefix"
}
],
"target" : [
{
"context" : "targetName",
"contextType" : "variable",
"element" : "prefix",
"transform" : "copy",
"parameter" : [
{
"valueId" : "prefix"
}
]
}
]
},
{
"name" : "CopySuffix",
"source" : [
{
"context" : "sourceName",
"element" : "suffix",
"variable" : "suffix"
}
],
"target" : [
{
"context" : "targetName",
"contextType" : "variable",
"element" : "suffix",
"transform" : "copy",
"parameter" : [
{
"valueId" : "suffix"
}
]
}
]
},
{
"name" : "copyPeriod",
"source" : [
{
"context" : "sourceName",
"element" : "period",
"variable" : "sourcePeriod"
}
],
"target" : [
{
"context" : "targetName",
"contextType" : "variable",
"element" : "period",
"variable" : "targetPeriod"
}
],
"rule" : [
{
"name" : "CopyPeriod",
"source" : [
{
"context" : "sourcePeriod"
}
],
"dependent" : [
{
"name" : "periodToPeriod",
"variable" : [
"sourcePeriod",
"targetPeriod"
]
}
]
}
]
}
]
},
{
"name" : "periodToPeriod",
"typeMode" : "none",
"input" : [
{
"name" : "sourcePeriod",
"mode" : "source"
},
{
"name" : "targetPeriod",
"type" : "Period",
"mode" : "target"
}
],
"rule" : [
{
"name" : "set period start",
"source" : [
{
"context" : "sourcePeriod",
"element" : "start",
"variable" : "start"
}
],
"target" : [
{
"context" : "targetPeriod",
"contextType" : "variable",
"element" : "start",
"transform" : "copy",
"parameter" : [
{
"valueId" : "start"
}
]
}
]
},
{
"name" : "set period end",
"source" : [
{
"context" : "sourcePeriod",
"element" : "end",
"variable" : "end"
}
],
"target" : [
{
"context" : "targetPeriod",
"contextType" : "variable",
"element" : "end",
"transform" : "copy",
"parameter" : [
{
"valueId" : "end"
}
]
}
]
}
]
}
]
}
XIG built as of ??metadata-date??. Found ??metadata-resources?? resources in ??metadata-packages?? packages.